package Tree;

import Tree.TreeNode;
/**
 * 543.二叉树的直径
 * 给你一棵二叉树的根节点，返回该树的 直径 。
 * 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。
 * 两节点之间路径的 长度 由它们之间边数表示。
 */
public class diameterOfBinaryTree {
    /**
     * hot100一刷
     * hot100二刷
     */
    class Solution {
        int res;
        public int diameterOfBinaryTree(TreeNode root) {
            high(root);
            return res;
        }

        public int high(TreeNode root) {
            if (root == null)
                return 0;
            int L = high(root.left);
            int R = high(root.right);
            res = Math.max(res, L + R);
            return Math.max(L,R) + 1;
        }
    }
}
